package com.yunyao.framework.service;

import com.yunyao.common.dto.ReconciliationDto;
import com.yunyao.common.dto.ReconciliationOrderDto;
import com.yunyao.common.dto.project.HistoryQtDto;
import com.yunyao.common.web.util.PageResult;
import com.yunyao.common.web.util.YResult;
import com.yunyao.framework.dto.reconciliation.ReconciliationMaterSaveDto;
import com.yunyao.framework.dto.reconciliation.ReconciliationMaterialDeleteDto;
import com.yunyao.framework.dto.reconciliation.ReconciliationMaterialDto;
import com.yunyao.framework.dto.reconciliation.ReconciliationSoSupplyDeleteDto;
import com.yunyao.framework.dto.reconciliation.ReconciliationSoSupplySaveDto;
import com.yunyao.framework.vo.reconciliation.ReconciliationMaterialCountVO;
import com.yunyao.framework.vo.reconciliation.ReconciliationMaterialVO;
import com.yunyao.framework.vo.reconciliation.ReconciliationOrderVO;
import com.yunyao.framework.vo.reconciliation.ReconciliationOrderinfoVO;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.List;

public interface ReconciliationOrderService {
    YResult<ReconciliationOrderinfoVO> getReconliationOrderById(String id);

    /**
     * 获取项目对账材料列表
     *
     * @param reconciliationMaterialDto
     * @return
     */
    YResult<PageResult<ReconciliationMaterialVO>> getReconciliationMaterialList(ReconciliationMaterialDto reconciliationMaterialDto);




    /**
     * 保存项目对账材料信息
     *
     * @param saveDto
     * @return
     */
    YResult<String> saveMaterialInfo(ReconciliationMaterSaveDto saveDto);

    /**
     * 删除项目对账材料信息
     *
     * @param deletedDto
     * @return
     */
    YResult<String> deletedMaterialInfo(ReconciliationMaterialDeleteDto deletedDto);

    /**
     * 获取项目对账验收清单列表
     *
     * @param
     * @return
     */
    YResult<PageResult<ReconciliationOrderVO>> getReconciliationSoSupplyList(ReconciliationOrderDto reconciliationOrderDto);

//    /**
//     * 项目结算对账订单分页列表
//     *
//     * @param projectSettlementOrderDto
//     * @return
//     */
//    YResult<PageResult<>> orderPageList(ProjectSettlementOrderDto projectSettlementOrderDto);

    List<String> getSoSupply(@NotBlank String contractId);

    /**
     * 保存项目对账验收清单信息
     *
     * @param saveDto
     * @return
     */
    YResult<String> saveSoSupplyInfo(ReconciliationSoSupplySaveDto saveDto);

    /**
     * 删除项目对账验收清单信息
     *
     * @param deletedDto
     * @return
     */
    YResult<String> deletedSoSupplyInfo(ReconciliationSoSupplyDeleteDto deletedDto);

    YResult<ReconciliationMaterialCountVO> getReconciliationMaterialCount(ReconciliationDto reconciliationDto);

}
